//
//  CLCharReverse.m
//  Charles
//
//  Created by Leo on 2019/6/4.
//  Copyright © 2019 charles. All rights reserved.
//

#import "CLCharReverse.h"

@implementation CLCharReverse
/*
 字符串翻转的基本思想：
 设置两个指针，一个指向字符串的头，一个指向字符串的尾部，然后在遍历的过程中逐步的交换头指针和尾指针的内容，然后移动指针到对应的下一个位置。直到头指针和尾指针指向同一个位置。
 */
void charReverse(char *chars) {
    // 指向第一个字符
    char *begin = chars;
    // 指向最后一个字符
    char *end = chars + strlen(chars) - 1;
    while (begin < end) {
        // 交换第一个和最后一个元素
        char temp = *begin;
        *(begin++) = *end;
        *(end--) = temp;
    }
}

// 递归写法
void charReverse2(char *s){
    if (*s == '\0') {
        return;
    }
    charReverse2(s+1);
    printf("%c",*s);
}

void charReverse3(char *s,int size){
    if (size == 1) {
        return;
    }
    charReverse3(s+1, size - 1);
    printf("%c",*s);
}

@end
